import java.util.Scanner;

public class test {
    //    求和的重载


//           在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
//    public static int add(int a,int b) {
//        return  a + b;
//    }
//
//    public static double add(double a,double b,double c) {
//        return a + b + c;
//    }


//    求最大值方法的重载


////    在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
//
//    public static int intMax(int a,int b) {
//        if (a > b) {
//            return a;
//        } else if (a < b) {
//            return b;
//        } else {
//            System.out.println("a==b");
//            return b;
//        }
//    }
//
//    public static double doubleMax(double a,double b,double c) {
//        if (a > b) {
//            if (a > c) {
//                return a;
//            } else {
//                return  c;
//            }
//        } else {
//            if (b > c) {
//                return b;
//            } else {
//                return c;
//            }
//        }
//    }

    //    递归求 N 的阶乘
//    public static int fun(int n) {
//        if (n == 1) {
//            return 1;
//        } else {
//            return n * fun(n-1);
//        }
//
//    }

//    递归求 1 + 2 + 3 + ... + 10

//    public static int fun(int n) {
//        if (n == 1) {
//           return 1;
//        } else {
//            return n + fun(n-1);
//        }
//    }

//    按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）

//    public static void print(int n) {
//        if (n < 10) {
//            System.out.println(n);
//            return;
//        } else {
//            System.out.println(n % 10);
//            print(n / 10);
//            System.out.println(n % 10);
//        }
//    }

//       创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。

//       要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
//    public static int max2(int a,int b) {
//        if (a > b) {
//           return a;
//        } else {
//            return b;
//        }
//    }
//
//    public static int max3(int a,int b,int c) {
//        int max = max2(a,b);
//        if (max > c) {
//            return max;
//        } else {
//            return c;
//        }
//    }

//    求斐波那契数列的第n项。(迭代实现) 迭代可以理解为循环
//    其数值为：1、1、2、3、5、8、13、21、34……
    public static int foi(int n) {
        if (n == 1 || n ==2) {
            return 1;
        }
        int a = 1;
        int b = 1;
        int c = 0;
        for (int i = 3; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }

        return c;
    }


    public static void main(String[] args) {

        System.out.println("请输入你想要第几项斐波那契数");
        Scanner myScanner = new Scanner(System.in);
        int n = myScanner.nextInt();
        int ret = foi(n);
        System.out.println("第"+ n + "项斐波那契数列为" + ret);

//        int ret = max2(10,20);
//        int ret2 = max3(10,20,30);
//
//        System.out.println(ret);
//        System.out.println(ret2);

//        在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
//        int ret = add(1, 2);
//        double ret2 = add(1.0, 2.0, 3.0);
//        System.out.println(ret);
//        System.out.println(ret2);


//        在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
//        int ret = intMax(1,2);
//        double ret2 = doubleMax(1.0,2.0,3.0);
//        System.out.println(ret);
//        System.out.println(ret2);

//        递归求 N 的阶乘

//        int n = 5;
//        int ret = fun(n);
//        System.out.println(n + "的阶乘是" + ret);

//        递归求和

//        递归求 1 + 2 + 3 + ... + 10
//        int n = 10;
//        int ret = fun(n);
//        System.out.println("前" + n + "位数相加的和为" + ret);

//        按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）

//        print(1234);


//       创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。

//      要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算


    }

}
